Problem se zapisem do registru ve WIN9x
Otázka od: Pavel Gazda
19. 12. 2002 13:28
Zdravim,
kde muze byt problem pri zapisu do registru ?
Tam kde to mohu odzkouset, mi vse funguje bez problemu,
ale jiz nekolikrat se stalo, ze zapis nebyl proveden, jednalo se
pravdepodobne o Win98 (pro Win2k to neni urceno).
Testovat to nijak nemohu, protoze k takovemu stroji se dostanu
tak 2x za rok.
diky za rady.
Pavel
K zapisu pouzivam priblizne toto:
Reg := TRegistry.Create;
try
with Reg, Klic do
begin
RootKey := $80000002;;
Ok := OpenKey(DefaultReg+KeyStr,true);
// zkusil jsem, ale nepomohlo
if not Ok then
begin
Ok := CreateKey(DefaultReg+KeyStr);
if Ok then
Ok := OpenKey(DefaultReg+KeyStr,false);
end;
//
if Ok then
begin
WriteString('Name',Name);
WriteInteger('SN',SN);
WriteInteger('Pwd',Pwd);
......
Odpovedá: Roman Konecny
19. 12. 2002 13:25
Ahoj,
tohle vypada jako ze zapisujes do klice, aniz bys predtim zavrel
predchzi. Je to celkem oblibena chybka. Priklad:
OpenKey(SomeKey);
WriteNeco(XXXX);
//-----------------chyba --- chybi CloseKey
OpenKey(Nextkey);
WriteNeco(XXXX);
Roman
----- Original Message -----
From: "Pavel Gazda" <Pavel.Gazda@seznam.cz>
To: "Delphi konf" <delphi-l@clexpert.cz>
Sent: Thursday, December 19, 2002 12:38 PM
Subject: Problem se zapisem do registru ve WIN9x
> Zdravim,
>
> kde muze byt problem pri zapisu do registru ?
> Tam kde to mohu odzkouset, mi vse funguje bez problemu,
> ale jiz nekolikrat se stalo, ze zapis nebyl proveden, jednalo se
> pravdepodobne o Win98 (pro Win2k to neni urceno).
> Testovat to nijak nemohu, protoze k takovemu stroji se dostanu
> tak 2x za rok.
>
> diky za rady.
>
> Pavel
>
> K zapisu pouzivam priblizne toto:
>
> Reg := TRegistry.Create;
> try
> with Reg, Klic do
> begin
> RootKey := $80000002;;
> Ok := OpenKey(DefaultReg+KeyStr,true);
> // zkusil jsem, ale nepomohlo
> if not Ok then
> begin
> Ok := CreateKey(DefaultReg+KeyStr);
> if Ok then
> Ok := OpenKey(DefaultReg+KeyStr,false);
> end;
> //
> if Ok then
> begin
> WriteString('Name',Name);
> WriteInteger('SN',SN);
> WriteInteger('Pwd',Pwd);
> ......
>
>
>
Odpovedá: Tvrz Miroslav
19. 12. 2002 15:16
Zkus to bez toho WITH, tzn.:
Reg := TRegistry.Create;
try
Reg.RootKey := $80000002;;
Ok := Reg.OpenKey(DefaultReg + KeyStr, True);
// zkusil jsem, ale nepomohlo
if not Ok then
begin
Ok := Reg.CreateKey(DefaultReg + KeyStr);
if Ok then
Ok := Reg.OpenKey(DefaultReg + KeyStr, False);
end;
//
if Ok then
begin
Reg.WriteString('Name', Name);
Reg.WriteInteger('SN', SN);
Reg.WriteInteger('Pwd', Pwd);
......
Jinak OpenKey() ti s paramatrem TRUE snad zalozi novy klic, pokud neexistuje
a nevyhasi to chybou
Miroslav Tvrz
Software Development Specialist
MERLIN
Štefánikova 32
150 00 Prague 5
Czech Republic
Tel.: (+420) 241010111
Fax: (+420) 241010165
E-mail: miroslav.tvrz@merlin.cz
http://www.merlinlogic.com/
http://www.merlin.cz/
-----Original Message-----
From: Pavel Gazda [mailto:Pavel.Gazda@seznam.cz]
Sent: Thursday, December 19, 2002 12:39 PM
To: Delphi konf
Subject: Problem se zapisem do registru ve WIN9x
Zdravim,
kde muze byt problem pri zapisu do registru ?
Tam kde to mohu odzkouset, mi vse funguje bez problemu,
ale jiz nekolikrat se stalo, ze zapis nebyl proveden, jednalo se
pravdepodobne o Win98 (pro Win2k to neni urceno).
Testovat to nijak nemohu, protoze k takovemu stroji se dostanu
tak 2x za rok.
diky za rady.
Pavel
K zapisu pouzivam priblizne toto:
Reg := TRegistry.Create;
try
with Reg, Klic do
begin
RootKey := $80000002;;
Ok := OpenKey(DefaultReg+KeyStr,true);
// zkusil jsem, ale nepomohlo
if not Ok then
begin
Ok := CreateKey(DefaultReg+KeyStr);
if Ok then
Ok := OpenKey(DefaultReg+KeyStr,false);
end;
//
if Ok then
begin
WriteString('Name',Name);
WriteInteger('SN',SN);
WriteInteger('Pwd',Pwd);
......
Odpovedá: Tvrz Miroslav
19. 12. 2002 14:18
A jeste mozna namisto teho $80000002 dat normalni konstantu
HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, atp.
Miroslav Tvrz
Software Development Specialist
MERLIN
Štefánikova 32
150 00 Prague 5
Czech Republic
Tel.: (+420) 241010111
Fax: (+420) 241010165
E-mail: miroslav.tvrz@merlin.cz
http://www.merlinlogic.com/
http://www.merlin.cz/
-----Original Message-----
From: Pavel Gazda [mailto:Pavel.Gazda@seznam.cz]
Sent: Thursday, December 19, 2002 12:39 PM
To: Delphi konf
Subject: Problem se zapisem do registru ve WIN9x
Zdravim,
kde muze byt problem pri zapisu do registru ?
Tam kde to mohu odzkouset, mi vse funguje bez problemu,
ale jiz nekolikrat se stalo, ze zapis nebyl proveden, jednalo se
pravdepodobne o Win98 (pro Win2k to neni urceno).
Testovat to nijak nemohu, protoze k takovemu stroji se dostanu
tak 2x za rok.
diky za rady.
Pavel
K zapisu pouzivam priblizne toto:
Reg := TRegistry.Create;
try
with Reg, Klic do
begin
RootKey := $80000002;;
Ok := OpenKey(DefaultReg+KeyStr,true);
// zkusil jsem, ale nepomohlo
if not Ok then
begin
Ok := CreateKey(DefaultReg+KeyStr);
if Ok then
Ok := OpenKey(DefaultReg+KeyStr,false);
end;
//
if Ok then
begin
WriteString('Name',Name);
WriteInteger('SN',SN);
WriteInteger('Pwd',Pwd);
......
Odpovedá: Pavel Gazda
19. 12. 2002 15:26
Myslim, ze to neni tento pripad, klic se otevira jen jednou a jeden,
jen se tam zapisuje vice udaju.
Pavel
>
> tohle vypada jako ze zapisujes do klice, aniz bys predtim zavrel
> predchzi. Je to celkem oblibena chybka. Priklad:
> OpenKey(SomeKey);
> WriteNeco(XXXX);
> //-----------------chyba --- chybi CloseKey
> OpenKey(Nextkey);
> WriteNeco(XXXX);
>
> > WriteString('Name',Name);
> > WriteInteger('SN',SN);
> > WriteInteger('Pwd',Pwd);
> > ......
Odpovedá: Miroslav Matějovic
19. 12. 2002 16:36
Pod W98 me funguje toto:
var
Reg : TRegistry;
begin
Reg := TRegistry.Create; {vytvoří Reg}
Reg.RootKey := HKEY_CURRENT_USER; {korenový klic}
Reg.OpenKey('\software\microsoft\Internet Explorer\PageSetup\', true);
{otevre klíč}
Reg.WriteString('margin_left', '0'); {zapse string}
.......
.......
Reg.CloseKey; {zavře klíč}
Reg.Free; {uvolní Reg}
end;